package org.ehe.business.supplier.domain.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * @author :zhangnn
 * @className :CreateSupplierRequest
 * @description: TODO
 * @date 2025-07-23 10:26:40
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class CreateSupplierRequest {
    /**
     * 供应商编码
     */
    @NotBlank(message = "供应商编码不能为空")
    private String supplierCode;

    /**
     * 供应商公司名称
     */
    @NotBlank(message = "供应商名称不能为空")
    private String supplierName;

    // ============== 基本信息字段 ==============
    /**
     * 开户行
     */
    private String bankName;

    /**
     * 收款账户
     */
    private String bankAccount;

    /**
     * 税种
     */
    private String taxType;

    /**
     * 税率(%)
     */
    private BigDecimal taxRate;

    /**
     * 供应产品类别
     */
    private String productCategory;

    /**
     * 当前等级
     */
    private String currentLevel;

    /**
     * 联系地址(省/市/区)
     */
    private String contactRegion;

    /**
     * 详细地址
     */
    private String detailedAddress;

    // ============== 营业执照信息字段 ==============
    /**
     * 社会信用代码
     */
    private String socialCreditCode;

    /**
     * 营业执照-单位名称
     */
    private String companyName;

    /**
     * 法定代表人
     */
    private String legalPerson;

    /**
     * 注册地址
     */
    private String registeredAddress;

    /**
     * 成立日期
     */
    private String establishDate;

    /**
     * 营业期限/有效期
     */
    private String businessPeriod;

    /**
     * 经营范围
     */
    private String businessScope;

    /**
     * 注册资本
     */
    private String registeredCapital;

    // ============== 业务管理字段 ==============
    /**
     * 供应商状态(0:停用 1:启用)
     */
    @NotNull(message = "供应商状态不能为空")
    private Integer supplierStatus;

    /**
     * 合作开始日期
     */
    private LocalDate cooperationStartDate;

    /**
     * 信用等级
     */
    private String creditRating;

    /**
     * 付款条件
     */
    private String paymentTerms;

    /**
     * 交货周期(天)
     */
    private Integer deliveryCycle;

    /**
     * 质量等级
     */
    private String qualityGrade;

    // ============== 联系信息 ==============
    /**
     * 联系人
     */
    private String contactPerson;

    /**
     * 联系电话
     */
    private String contactPhone;

    /**
     * 联系邮箱
     */
    private String contactEmail;

    /**
     * 传真号码
     */
    private String fax;

    /**
     * 官方网站
     */
    private String website;

    // ============== 财务信息 ==============
    /**
     * 开票抬头
     */
    private String invoiceTitle;

    /**
     * 开票税号
     */
    private String invoiceTaxNumber;

    /**
     * 开票地址
     */
    private String invoiceAddress;

    /**
     * 开票电话
     */
    private String invoicePhone;

    /**
     * 营业执照文件路径
     */
    private String businessLicenseFile;

    /**
     * 其他证件文件(JSON格式)
     */
    private String otherCertificates;

    /**
     * 备注
     */
    private String remark;

    /**
     * 分类ID列表
     */
    private List<Long> categoryIds;

    // ============== 审计字段 ==============
    /**
     * 创建人ID
     */
    private Long createdBy;

    /**
     * 租户ID
     */
    private String tenantId;
}
